﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using VirtualTerminalControl;

namespace WindowsForms_测试
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Task.Run(() =>
            {
                Thread.Sleep(10000);
                BackgroundTask();
            });
        }
        // 定义一个委托，用于封装需要在UI线程执行的操作
        private delegate void UpdateTabPageDelegate();

        // 你的非UI线程方法（比如后台任务）
        private void BackgroundTask()
        {
            // 假设这里需要访问 tabPage1（非UI线程中）
            if (this.tabPage1.InvokeRequired)
            {
                // 非UI线程：通过 Invoke 委托到UI线程执行
                this.tabPage1.Invoke(new UpdateTabPageDelegate(Start));
            }
            else
            {
                // 已经是UI线程：直接执行
                Start();
            }
        }
        public void Start()
        {



          
              
               SSH_Client sSH_Client = new SSH_Client("1.1.1.1", "username", "passsword");
              
                VirtualTerminal virtualTerminal = new VirtualTerminal();
               
                virtualTerminal.Dock = DockStyle.Fill;
          //  virtualTerminal.BackColor = Color.Blue;
                tabPage1.Controls.Add(virtualTerminal);
                
                //virtualTerminal.OnDataRequested += VirtualTerminal_OnDataRequested;
                // 改用 lambda 表达式订阅事件
                virtualTerminal.OnDataRequested += (e) =>
                {
                 //   virtualTerminal.WriteByte("test +\r\n");
                    sSH_Client.Send(e);
                    // 这里放入原来 VirtualTerminal_OnDataRequested 方法中的逻辑
                    // 例如：处理数据请求、发送响应等
                    // 示例：
                    // Console.WriteLine("数据请求触发：" + e.RequestData);
                    // e.Response = "处理后的响应数据";
                };
            sSH_Client.OnReadData += (se, e) =>
            {
                virtualTerminal.WriteByte(e);
            };

        }

        private void VirtualTerminal_OnDataRequested(byte[] data)
        {
            throw new NotImplementedException();
        }
    }
}
